package com.easyapi.common.bean;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.*;

import java.io.Serializable;

/**
 * api信息表
 */
@Data
@EqualsAndHashCode(callSuper=true)
@Builder
@AllArgsConstructor
@NoArgsConstructor
@TableName(value = "api_center_interface_info")
public class ApiCenterInterfaceInfo extends BaseModel implements Serializable {
    /**
     * id
     */
    @TableId(value = "id", type = IdType.AUTO)
    private Long id;

    /**
     * 是否删除1--删除
     */
    @TableField(value = "is_deleted")
    private Integer isDeleted;

    /**
     * api中文名称
     */
    @TableField(value = "api_name_cn")
    private String apiNameCn;

    /**
     * api英文名称
     */
    @TableField(value = "api_name")
    private String apiName;

    /**
     * 描述
     */
    @TableField(value = "api_desc")
    private String apiDesc;

    /**
     * 项目id
     */
    @TableField(value = "project_id")
    private Long projectId;

    /**
     * 数据源id
     */
    @TableField(value = "datasource_id")
    private Long datasourceId;

    /**
     * 数据库名
     */
    @TableField(value = "databases_name")
    private String databasesName;

    /**
     * 目标表名
     */
    @TableField(value = "`table_name`")
    private String tableName;

    /**
     * 访问次数限制
     */
    @TableField(value = "req_limit")
    private Integer reqLimit;

    /**
     * api类型(0-生成,1-注册api)
     */
    @TableField(value = "api_type")
    private Integer apiType;

    /**
     * 状态: 0:正常/1:下线/2-禁用
     */
    @TableField(value = "api_status")
    private Integer apiStatus;

    /**
     * 输入参数
     */
    @TableField(value = "input_params")
    private String inputParams;

    /**
     * 输出参数
     */
    @TableField(value = "output_params")
    private String outputParams;

    /**
     * 生成api请求类型: 0:GET/1:POST
     */
    @TableField(value = "req_type")
    private Integer reqType;

    @TableField(value = "api_path")
    private String apiPath;

    /**
     * 参数配置模式：0-向导模式，1-sql模式
     */
    @TableField(value = "param_cfg_type")
    private Integer paramCfgType;

    /**
     * 是否分页：0-不分页，1-分页
     */
    @TableField(value = "allow_paging")
    private Integer allowPaging;

    /**
     * 分页大小
     */
    @TableField(value = "resp_page_size")
    private Integer respPageSize;

    /**
     * 自定义sql
     */
    @TableField(value = "config_sql")
    private String configSql;

    /**
     * 返回json示例
     */
    @TableField(value = "resp_json")
    private String respJson;

    /**
     * 数据源类型0-mysql
     */
    @TableField(value = "data_src_type")
    private Integer dataSrcType;

    /**
     * 注册API的原始api host
     */
    @TableField(value = "original_host")
    private String originalHost;

    /**
     * 注册api的原始api path
     */
    @TableField(value = "original_path")
    private String originalPath;

    /**
     * 注册api的原始api port(socket协议)
     */
    @TableField(value = "original_port")
    private Integer originalPort;

    /**
     * 注册api原始请求方式。(枚举GET,POST,PUT)
     */
    @TableField(value = "original_method")
    private String originalMethod;

    /**
     * 注册api的错误码列表
     */
    @TableField(value = "error_code_list_json")
    private String errorCodeListJson;

    /**
     * 注册api的错误返回示例
     */
    @TableField(value = "error_resp_json")
    private String errorRespJson;

    /**
     * 注册api put、post请求body示例
     */
    @TableField(value = "body_desc_json")
    private String bodyDescJson;

    @TableField(value = "api_token")
    private String apiToken;

    /**
     * api查询超时时间
     */
    @TableField(value = "query_time_out")
    private Integer queryTimeOut;

    /**
     * da_api_test的api状态: 0:未提交/1:已提交
     */
    @TableField(value = "test_status")
    private Integer testStatus;

    /**
     * 是否缓存
     */
    @TableField(value = "is_cache")
    private Integer isCache;

    /**
     * 缓存失效周期，1-分，2-时，3-天，4-周，5-月
     */
    @TableField(value = "cache_expiry_period")
    private Integer cacheExpiryPeriod;

    /**
     * 缓存失效时间的cron表达式
     */
    @TableField(value = "cache_expiry_date_cron")
    private String cacheExpiryDateCron;

    /**
     * 服务编排执行流程图
     */
    @TableField(value = "execution_flow_chart")
    private String executionFlowChart;

    /**
     * 是否忽略语法校验
     */
    @TableField(value = "is_ignore_syntax_check")
    private Integer isIgnoreSyntaxCheck;

    /**
     * 服务编排执行流程
     */
    @TableField(value = "orchestration_flow")
    private String orchestrationFlow;
}